/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	IPromptContent.java
 * 模块说明：	
 * 修改历史：
 * Oct 30, 2007 - lxm - 创建。
 */
package com.hd123.rumba.prompt.provider;

import java.util.Date;
import java.util.Map;

import com.hd123.rumba.exception.BusinessException;

/**
 * 提醒内容 | 实体 | 接口类
 * 
 * @author lxm
 * 
 */
public interface IPromptContent extends Map<String, Object> {

  /**
   * 将指定的提醒内容对象与当前对象进行合并。若对于相同的key，当前对象与指定对象都存在值，则结果为参数传入对象所对应的值。
   * 
   * @param source
   *          指定的提醒内容。
   * @throws BusinessException
   */
  public void merge(IPromptContent source) throws BusinessException;

  /**
   * 将对象转换为上下文（序列化）。
   * 
   * @return
   * @throws BusinessException
   */
  public String toContext() throws BusinessException;

  /**
   * 应用参数。
   * 
   * @param dict
   *          指定包含参数取值的数据字典。
   * @throws BusinessException
   */
  public void applyParams(Map<String, Object> dict) throws BusinessException;

  /**
   * 判断是否与指定的另一个提醒内容对象相同。所谓相同，表示对应的提醒可能可以合并为一条。
   * 
   * @param target
   *          指定的提醒内容对象。
   * @return
   * @throws BusinessException
   */
  public boolean sameAs(IPromptContent target) throws BusinessException;

  /** 标题 */
  public String getTitle() throws BusinessException;

  public void setTitle(String title) throws BusinessException;

  /** 正文 */
  public String getText() throws BusinessException;

  public void setText(String text) throws BusinessException;

  /** 标记 */
  public String getFlag() throws BusinessException;

  public void setFlag(String flag) throws BusinessException;

  /** 级别 */
  public Integer getLevel() throws BusinessException;

  public void setLevel(Integer level) throws BusinessException;

  /** 提醒发出者标识 */
  public String getSenderId() throws BusinessException;

  public void setSenderId(String senderId) throws BusinessException;

  /** 提醒发出者类名 */
  public String getSenderClassName() throws BusinessException;

  public void setSenderClassName(String senderClassName) throws BusinessException;

  /** 发生时间 */
  public Date getTime() throws BusinessException;

  public void setTime(Date time) throws BusinessException;
}
